package com.uzai.console.service.user;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.TbUserInfo.TbUserInfoIdDto;
import com.uzai.console.dto.TbUserInfo.TbUserInfoQuery;
import com.uzai.console.dto.TbUserInfo.TbUserInfoUpdateDto;
import com.uzai.console.dto.user.UserUpdateMarketingTagDto;
import com.uzai.console.dto.user.wechatuser.*;
import com.uzai.console.dto.user.useraccdetail.UserAccDetailQuery;
import com.uzai.console.vo.tbuserinfo.TbUserInfoVo;
import com.uzai.console.vo.user.wechatuser.WechatUserInfoVo;
import com.uzai.console.vo.user.wechatuser.WechatUserPageVo;
import com.uzai.console.vo.user.useraccdetail.UserAccDetailInfoVo;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author liuqi
 * @date 2021年08月25日 20:17
 */
public interface WechatUserService {
    /**
     * 分页查询微信用户列表
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserQuery
     * @return null
     */
    Page<WechatUserPageVo> findWechatUserList(WechatUserQuery wechatUserQuery);

    /**
     * 分页查询下级用户列表
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param findSonUserListQuery
     * @return null
     */
    Page<WechatUserPageVo> findSonUserList(FindSonUserListQuery findSonUserListQuery);

    /**
     * 查询微信用户详情
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserIdDto
     * @return null
     */
    WechatUserInfoVo findWechatUserInfo(WechatUserIdDto wechatUserIdDto);

    /**
     * 根据单个机器人群发消息(异步)
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserBatchSendMsgDto
     * @return null
     */
    Integer groupSendMsgByDeviceUniqueId(WechatUserBatchSendMsgDto wechatUserBatchSendMsgDto);

    /**
     * (多选框选择会员)根据单个机器人群发消息(异步)
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserSendMsgBatchDto
     * @return null
     */
    Integer groupSendMsgByDeviceUniqueIdBatch(WechatUserSendMsgBatchDto wechatUserSendMsgBatchDto);

    /**
     * 删除用户信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param id
     * @return null
     */
    void deleteUserById(Long id, Long merId);

    /**
     * 删除下级用户信息(不删会员，只清除上下级关系)
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserDeleteSonDto
     * @return null
     */
    void deleteSonWechatUser(WechatUserDeleteSonDto wechatUserDeleteSonDto);

    /**
     * 分页查询微信用户账户明细列表
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserAccDetailQuery
     * @return null
     */
    Page<UserAccDetailInfoVo> findWechatUserAccDetailList(UserAccDetailQuery wechatUserAccDetailQuery);

    /**
     * 分页查询用户会员渠道ID列表
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param tbUserInfoQuery
     * @return null
     */
    Page<TbUserInfoVo> findTbUserInfoList(TbUserInfoQuery tbUserInfoQuery);

    /**
     * 修改会员渠道ID
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param tbUserInfoUpdateDto
     * @return null
     */
    void updateTbUserInfo(TbUserInfoUpdateDto tbUserInfoUpdateDto);

    /**
     * 删除会员渠道ID
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param tbUserInfoIdDto
     * @return null
     */
     void deleteTbUserInfo(TbUserInfoIdDto tbUserInfoIdDto);

    /**
     * 修改微信用户积分余额
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserUpdateBalanceDto
     * @return null
     */
    void updateWechatUserBalance(WechatUserUpdateBalanceDto wechatUserUpdateBalanceDto);

    /**
     * 修改微信用户定向比例
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserUpdatePriRewardRulesDto
     * @return null
     */
    void updateWechatUserPriRewardRules(WechatUserUpdatePriRewardRulesDto wechatUserUpdatePriRewardRulesDto);

    /**
     * 修改微信用户会员标签
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param userUpdateMarketingTagDto
     * @return null
     */
    void updateSysTags(UserUpdateMarketingTagDto userUpdateMarketingTagDto);

    /**
     * 加入黑名单
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserAddBlackDto
     * @return null
     */
    void addBlackUser(WechatUserAddBlackDto wechatUserAddBlackDto);

    /**
     * 修改微信用户详情信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserInfoUpdateDto
     * @return null
     */
    void updateWechatUserInfo(WechatUserInfoUpdateDto wechatUserInfoUpdateDto);

    /**
     * 用户发送消息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @return null
     */
     void  sendMessageToOneUser(WechatUserSendMsgDto wechatUserSendMsgDto);

    /**
     * 单个用户修改信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserUpdateDto
     * @return null
     */
    void updateToOneUser(WechatUserUpdateDto wechatUserUpdateDto);

    /**
     * 单个用户定投筛选
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserOptCpcDto
     * @return null
     */
    void optCpcToOneUser(WechatUserOptCpcDto wechatUserOptCpcDto);

    /**
     * 更新微信信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wechatUserIdDto
     * @return null
     */
    WechatUserInfoVo updateUserInfoFromWechat(WechatUserIdDto wechatUserIdDto);


    /**
     * 修改互通的公众号会员的公众号
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateWxpubUserDto
     * @return null
     */
    void updateInterflowWxpubUser(UpdateWxpubUserDto updateWxpubUserDto);

    /**
     * 清除会员的互通信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param cleanUserUnionIdDto
     * @return null
     */
    void cleanUserUnionId(CleanUserUnionIdDto cleanUserUnionIdDto);

    /**
     * 修改会员订阅信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateSubscribeInfoDto
     * @return null
     */
    void updateSubscribeInfo(UpdateSubscribeInfoDto updateSubscribeInfoDto);

    /**
     * 修改会员营销奖励信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateMarketingRewardDto
     * @return null
     */
    void updateMarketingReward(UpdateMarketingRewardDto updateMarketingRewardDto);


}
